package Main;

import java.util.Arrays;
import java.util.Scanner;

class Student{
   private String name;
   private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class Test {


    public static void main(String[] args) {
     //另外一个去除字符串两边空格的方法
        String s1 = " hehe ";
        System.out.println("["+s1+"]");
        System.out.println("["+s1.trim()+"]"); //去除了字符串两侧的空格！！！









    }
    //字符串的截取！
    public static void main14(String[] args) {
        //从指定位置开始一直截取到头：
        String string1 = "hello world";
        System.out.println(string1.substring(2)); //从下标2开始截取！
       //从指定位置开始截取，再指定位置结束：
        System.out.println(string1.substring(1,6)); //从下标1开始截取，截取到下标6，下标6'w'是不截取的
        //java中的规则一般是前闭后开 [  )
    }
    public static void main13(String[] args) {
        //字符串拆分
       /* String string1 = "hello wor ld";
        //以某一个字符为界限，拆分字符串成多个字符串,字符以字符串的形式作为参数！
        String []strings = string1.split(" ");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        //对字符串拆成几部分做出限制！
        String[] strings1=       string1.split(" ",2);
        for (int i = 0; i < strings1.length; i++) {
            System.out.println(strings1[i]);
        }*/
        //特殊情况：对于正则表达式的拆分
    //1. 字符"|","*","+"都得加上转义字符，前面加上 "\\"
    // 2. 而如果是 "\"，那么就得写成 "\\\\" ."
    //  "3. 如果一个字符串中有多个分隔符，可以用"|"作为连字符.

    /*    String  string2 = "hello+world";  // '
       String []strings = string2.split("\\+");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        String string3 = "hello\\wo rld";
        String []strings1 = string3.split("\\\\| ");

        for (int j = 0; j < strings1.length; j++) {
            System.out.println(strings1[j]);
        }
*/
    }
    public static void main12(String[] args) {
        //字符串替换：——替换字符，替换字符串

        String string1 = "hello world";
        //将所有的l字符转换成L字符
        System.out.println(string1.replace('l','L'));
        //替换hello字符串
        System.out.println(string1.replace("hello","my"));
        //replaceAll与替换字符串replace的功能相同
        System.out.println(string1.replaceAll("hello","my"));
      //替换第一个出现的指定字符串
        System.out.println(string1.replaceFirst("l","L"));
    }

    public static void main10(String[] args) {
        //字符串查找：——查找字符，查找字符串
       //1  查找指定下标的字符charAt(index);
    /*    String string1 = "my name is zhang"; //空格也算一个字符
        for (int i = 0; i < string1.length(); i++) {
            char ch = string1.charAt(i);
            System.out.print(ch );
        }*/

        //2  在字符串中找指定字符的下标：
        //如果有返回下标值，没有返回-1
     /*   String string2 = "hello bit";
        System.out.println(string2.indexOf('e'));//找到了下标为1
        System.out.println(string2.indexOf('w'));//未找到-1
        //从指定位置开始顺序查找：
        System.out.println(string2.indexOf('e',2));//从下标2开始查找*/

        //3 在字符串中找指定字符串的下标
       /* String string3 = "hello bit";
        System.out.println(string3.indexOf("ll")); //第一个'I'的下标为2
        //在字符串中指定位置开始顺序查找指定字符串
        System.out.println(string3.indexOf("ll",2));*/

        // 4  逆序查找字符与字符串
        //从后往前查找字符
        String name = "zhangsan";
       /* System.out.println(name.lastIndexOf('g'));//下标不会变，只是改变查找的顺序方向！
        System.out.println(name.lastIndexOf('g',1));   //从下标1开始逆序寻找*/
        //逆序查找字符串
        //在查找字符串时，从指定的位置开始往后判断是否有指定的字符串，没有再往前查找
        //也就是说，逆序查找字符串时，本质上是字符串首字符的逆序
      //  System.out.println(name.lastIndexOf("an"));
     System.out.println(name.lastIndexOf("ang",2));

    }
    public static void main11(String[] args) {
        //字符串的转化
        //1  数字转化成字符串
       /* String string1 = String.valueOf(1234);//valueof是静态方法！
        System.out.println(string1+1);   //字符串连接
        //字符串转化成数字——整型Interger
        int i1 =  Integer.parseInt(string1);
        System.out.println(i1+1);   //+1后的值是1235，说明成功转化成数值*/
        //2 对象转化成字符串
      /*  String string2 =  String.valueOf(new Student("张三",10)) ;
        System.out.println(string2);*/
       //3 字符串大小写相互转换
            //大写转换成小写
      /*  String string1 = "Hello world";

        System.out.println(string1.toLowerCase());
         //小写转换成大写
        String string2 = "hello world";
        System.out.println(string2.toUpperCase());*/
   // 4  字符串与数组之间相互转换
        //字符串转换成数组
       /* String string3 = "hello world";
        for (int i = 0; i < string3.length(); i++) {
            char ch = string3.charAt(i);//charAt
            System.out.print(ch+" ");
        }
        System.out.println();
        //数组转换成字符串
       char [] chars = {'a','b','c','d','e'};
       String string4 = new String(chars);
        System.out.println(string4);*/
//5  格式化——是将数据已格式化的形式变为字符串
        String string5 = String.format("%d_%d_%d",2019,10,05);
        System.out.println(string5);
    }
    public static void main2(String[] args) {
        //字符串之间的比较
        //1 ==
        //此关系运算符只能比较基本数据类型的值，不能比较引用数据类型指向的对象的值
       /* String string1 = new String("hello world");
        String string2 = new String("hello world");*/
       // System.out.println(string1==string2);   //只是比较了两个引用中的地址。
        // 2 equals
        //通过调用equals方法可以判断，两个字符串是否相等
    //    String string3  = new String("haha");
       /* System.out.println(string1.equals(string2));  //相等
        System.out.println(string1.equals(string3));  //不等
        System.out.println(string2.equals(string3)); //不等*/
// 3   调用compareTo方法,比较哪个字符串大，哪个字符串小！(String类实现了comparable接口)
      //字符串比较的规则是：找课件中的内容
        //0表示两个字符串相等，正数表示调用方法的字符串比输入的实参字符串大，负数表示小！
    /*    System.out.println(string1.compareTo(string2));
        System.out.println(string2.compareTo(string3));
        System.out.println(string1.compareTo(string3));*/

//4  调用 compareToIgnoreCase方法，忽视字符串大小写的差异进行比较。
    /*  String string1 = "Hello world";
      String string2 = "hello world";
        System.out.println(string1.compareTo(string2));
        System.out.println(string1.compareToIgnoreCase(string2));*/

    }
    public static void main1(String[] args) {
        //字符串的三种构造方法！
        //常量字符串
       /* String string1 = "hello world";
        //通过实例化String对象
        String string2 = new String("hello world");
        //通过字符数组
        char[] arr1 = {'a','b','c','d','e','f'};
        String string3 = new String(arr1);
        System.out.println(string1);
        System.out.println(string2);
        System.out.println(string3);*/
        //关于字符串在内存中的存储状况！
    }
    public static void main0(String[] args) {
        //求输入的字符串的最后一个单词长度
     /*   Scanner scanner = new Scanner(System.in);
          String s1 =             scanner.next();
        //
        String[] strings = s1.split(" ");
        System.out.println(strings[1]);*/





    }
}
